<?php
/**
 * 分类管理控制器
 */
class CategoryController extends CommonController{

	//保存模型对象
	private $_model;
	//保存编辑、添加所属分类名称	
	private $father_name;
	//构造函数
	public function __init(){
		//实例化对象categorymodel.class.php
		$this->_model=K('Category');

		// 因为所属分类多个方法调用具有共用形所以放在构造方法，
		// 获得所属分类（父级）名称，让所有方法都可调用分配的所属分类变量
		if(Q('get.pid',0,'interval')==0){
			//如果传进来的pid=0也就是顶级分类，直接赋值
			$this->father_name['cname']='顶级分类';
		}else{
			//不是顶级分类，那就查询相应cname,条件为的cid=传进来的pid,
			$this->father_name=$this->_model->get_one_data(array('cid'=>Q('get.pid',0,'interval')),'cname');
		}

		//分配变量
		$this->assign('father_name',$this->father_name['cname']);
	}
	/**
	 * 显示分类
	 */
	public function index(){
		//分配变量，调用categorymodel.class.php中的get_all_data（）
		$data=$this->_model->get_all_data();

		$this->assign('data',$data);

		//显示模板
		$this->display();
	}

	/**
	 * 添加顶级分类
	 */
	public function add(){
		if (IS_POST) {
			//执行模型添加，在添加的动作之前，有自动验证add_data()
			if(!$this->_model->add_data()) $this->error($this->_model->error);
			$this->success('添加成功');
		}
		//查询分类类型
		$data=$this->_model->get_all_type();

		//分配变量
		$this->assign('data',$data);
		$this->display();
	}

	/**
	 * 添加子集分类
	 */
	public function add_son(){
		if (IS_POST) {
			//同添加顶级分类一样，都要经过自动验证ad_data()中
			if(!$this->_model->add_data()) $this->error($this->_model->error);
			// 成功跳转到分类列表首页
			$this->success('添加成功',U('index'));
		}
		//获得所属分类名称，
		$data = $this->_model->get_one_data(array('cid'=>Q('get.cid', 0, 'intval')),'cname');
		//分配变量，所属分类
		$this->assign('cname',$data['cname']);
		
		//显示添加子类模板
		$this->display();
	}

    /**
	 * 异步获取子分类
	 */
	public function ajax_get_son(){
		//禁止非ajax请求
		if (!IS_AJAX) $this->error('非法请求！');
		//调用categorymodel中的get_son_data方法，只需传入一个cid参数
		$sonId=$this->_model->get_son_data(Q('post.cid'),0,'interval');
		//返回给js,json数据echo json_encode($sonId);die;
		
		$this->ajax($sonId);

	}

	

	/**
	 * 修改分类
	 */
	public function edit_cate(){

		if (IS_POST) {
			//执行模型中的edit_data方法（自动验证）
			// p($this->_model->edit_data($cid));die;
			// where条件以数组的形式传入
			$this->_model->edit_data(array('cid'=>Q('get.cid',0,'intval')));
			$this->success('修改成功!',U('index'));
		}
		//获得要修改的记录所有信息，
		$cid=Q('get.cid', 0, 'intval');
		$message = $this->_model->get_one_data(array('cid'=>$cid));
		//分配变量,旧数据
		$this->assign('message',$message);
		// p($message);
		//判断如编辑的是顶级分类pid=0;那么可选分类选项，为类型，
		//反之可选分类为分类(排除自己和自己子集)
		if ($message['pid']==0) {
			//查询分类类型
			$data=$this->_model->get_all_type();
			
		}else{
			$data=$this->_model->get_other_data($cid);
		}
		// p($data);
		//分配变量，可选分类或者类型
		//模板中根据pid是否等于0来判断父级是类型属性还是普通分类
		$this->assign('data',$data);
		
		//显示修改分类模板
		$this->display();
	}
	/**
	 * 删除分类
	 */
	public function del_cate(){
		//执行删除，如果失败提示错误
		$cid=Q('get.cid',0,'intval');
		if (!$this->_model->del_data($cid)) $this->error($this->_model->error);
		//删除成功，跳转到分类列表页
		$this->success('删除成功!',U('index'));
	}
}